﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using SviluppoDistinta.Library;
using System.Diagnostics;
using System.ComponentModel;
using System.Drawing;

namespace SviluppoDistinta.WinApp
{
    public partial class Distinta : Form
    {
        //public int k = 0;  // contatore pacchi
        //public int x = 0;  // x-pos pacco per la distinta
        //public int y = 0;  // y-pos pacco per la distinta, numero totale righe distinta pacchi
        //public int r = 0;  // num tot di colonne per la distinta pacchi
        //public int tempNumPezzi = 0;

        private BindingList<Parte> listaParti = new BindingList<Parte>();
        private Ordine ordine;
        List<int> Cp = new List<int>(); // capi per colore/taglia

        public Distinta()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            Articolo a = new Articolo(txtArticolo.Text);


            a.Parti.Clear();
            foreach (Parte p in listaParti)
            {
                a.Parti.Add(p);
            }



            ordine.Articolo = a;
            ordine.Bolla = txtBolla.Text;

            ordine.SviluppaPacchi();

            NumTotPacchi.Text = ordine.Pacchi.Count.ToString();
            NumColPacchi.Text = ordine.MaxX + " / " + ordine.MaxY;
            paccoBindingSource.DataSource = ordine.Pacchi;
            //grdPacchi.Columns[0].Width = 60;
            //grdPacchi.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //grdPacchi.Columns[0].Visible = true;
            //grdPacchi.Columns[1].Width = 60;
            //grdPacchi.Columns[2].Width = 60;
            //grdPacchi.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //grdPacchi.Columns[3].Width = 40;
            //grdPacchi.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //grdPacchi.Columns["ColTaglia"].DisplayIndex = 3;
            //for (int g = 4; g < grdPacchi.ColumnCount; g++)
            //{
            //    grdPacchi.Columns[g].Width = 38;
            //    grdPacchi.Columns[g].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //}

        }

        private void Distinta_Load(object sender, EventArgs e)
        {
            ordine = new Ordine();
            lstParti.DataSource = listaParti;
            lstTaglie.DataSource = ordine.Taglie;
            lstColori.DataSource = ordine.Colori;


//            this.reportViewer1.RefreshReport();
        }

        private void InvioPremuto(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter && sender is TextBox)
            {
                TextBox casellatesto = (TextBox)sender;

                if (casellatesto.Text != "")
                {
                    if (casellatesto == txtColore)
                    {
                        ordine.Colori.Add(new Colore(casellatesto.Text));
                    }

                    if (casellatesto == txtTaglia)
                    {
                        ordine.Taglie.Add(new Taglia(casellatesto.Text));
                    }

                    if (casellatesto == txtTaglia || casellatesto == txtColore)
                    {
                        e.SuppressKeyPress = true;
                        casellatesto.Text = "";
                    }
                }
            }

        }

        private void CancellaDallaLista(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete && sender is ListBox)
            {
                ListBox lista = (ListBox)sender;
                if (sender == lstTaglie)
                {
                    ordine.Taglie.Remove((Taglia)lista.SelectedItem);
                }

                if (sender == lstColori)
                {
                    ordine.Colori.Remove((Colore)lista.SelectedItem);
                }

            }
        }

        private void btnDatiParti_Click(object sender, EventArgs e)
        {
            DatiParti frmParti = new DatiParti(listaParti, lstParti);
            frmParti.ShowDialog();
        }

        private void btnShowNumCapi_Click(object sender, EventArgs e)
        {
            NumeroCapi frmNc = new NumeroCapi(ordine);
            frmNc.ShowDialog();
        }


        private void btnGoDistinta_Click(object sender, EventArgs e)
        {
            DistintaDiLavoro dl = new DistintaDiLavoro(ordine);
            dl.GeneraDistinta();
            dl.Show();
        }

        private void btnFillDefault_Click(object sender, EventArgs e)
        {
            //listaParti.Add(Parte.Davanti);
            listaParti.Add(Parte.Schiena);
            //listaParti.Add(Parte.Manica);
            listaParti.Add(Parte.Collo);

            ordine.CapiPerGruppo = 25;
            ordine.Colori.Add(Colore.Rosso);
            ordine.Colori.Add(Colore.Verde);
            ordine.Colori.Add(Colore.Blu);

            ordine.Taglie.Add(Taglia.XXS);
            ordine.Taglie.Add(Taglia.XS);
            ordine.Taglie.Add(Taglia.S);
            ordine.Taglie.Add(Taglia.M);

            ordine.SetNumeroCapi(Colore.Rosso, Taglia.XXS, 332);
            ordine.SetNumeroCapi(Colore.Rosso, Taglia.XS , 62);
            ordine.SetNumeroCapi(Colore.Rosso, Taglia.S, 13);
            ordine.SetNumeroCapi(Colore.Rosso, Taglia.M, 75);
            ordine.SetNumeroCapi(Colore.Verde, Taglia.XXS, 122);
            ordine.SetNumeroCapi(Colore.Verde, Taglia.XS , 27);
            ordine.SetNumeroCapi(Colore.Verde, Taglia.S, 132);
            ordine.SetNumeroCapi(Colore.Verde, Taglia.M, 18);
            ordine.SetNumeroCapi(Colore.Blu, Taglia.XXS, 20);
            ordine.SetNumeroCapi(Colore.Blu  , Taglia.XS , 28);
            ordine.SetNumeroCapi(Colore.Blu, Taglia.S, 52);
            ordine.SetNumeroCapi(Colore.Blu, Taglia.M, 29);

        }

        private void btnStampaCartellini_Click(object sender, EventArgs e)
        {
            ReportViewer rv = new ReportViewer();
            Reports.Cartellini rptCart = new Reports.Cartellini();
            rptCart.SetDataSource(ordine.Pacchi);
            rv.crystalReportViewer1.ReportSource = rptCart;
            rv.Show();
        }
    }
}
